﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Reportes;
using Servicios;
using Dominio;
using Excepciones;
using UI.Miembros;

namespace UI
{
    public partial class Reportes : System.Web.UI.Page
    {
        IReporteManager reporteManager = FabricaDeReportes.ObtenerInstancia().ObtenerReporteManager();

        IUsuarioService usuarioService = FabricaDeServicios.ObtenerInstancia().ObtenerUsuarioService();

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {

                if (Session[ConstantesDeSesion.Usuario] != null)
                {
                    Usuario usuario = (Usuario)Session[ConstantesDeSesion.Usuario];
                    if (((Security)Session[ConstantesDeSesion.Security]).RolPermitido(usuario.Rol, ConstantesFuncionalidades.Reportes))
                    {
                        IList<string> reportes = reporteManager.ObtenerNombreDeReportes();
                        this.DropDownListReportes.DataSource = reportes;
                        this.DropDownListReportes.DataBind();

                        IList<string> nombresDeUsuarios = new List<string>();
                        foreach (Usuario u in this.usuarioService.ObtenerTodos())
                        {
                            nombresDeUsuarios.Add(u.NombreUsuario);
                        }

                        DropDownListUsuarios.DataSource = nombresDeUsuarios;
                        DropDownListUsuarios.DataBind();
                    }
                    else
                    {
                        //Usuario  no autorizado
                        WebUtils.MsgBox("Usuario no Autorizado");
                        Response.Redirect("~/Miembros/Busquedas.aspx");
                    }
                }
                else
                {
                    //Usuario no autenticado
                    WebUtils.MsgBox("Usuario no Autenticado");
                    Response.Redirect("~/Login.aspx");
                }
            }
        }

        protected void Seleccionar_Click(object sender, EventArgs e)
        {
            IDictionary<string,object> parametros = null;
            if (Panel1.Visible) 
            {
                parametros = new Dictionary<string,object>();
                DateTime fechaIni = CalendarFechaIni.SelectedDate;
                parametros.Add("fecha de inicio", fechaIni);
                DateTime fechaFin = CalendarFechaFin.SelectedDate;
                parametros.Add("fecha de fin", fechaFin);
                string userName = DropDownListUsuarios.SelectedValue;
                parametros.Add("Usuario", userName);
            }
            string nombreReporte = DropDownListReportes.SelectedValue;
            try
            {
                GridViewResultados.DataSource = this.reporteManager.EjecutarReportePorNombre(nombreReporte, parametros);
                GridViewResultados.DataBind();
            }
            catch (ReporteException ex)
            {
                WebUtils.MsgBox(ex.Message);
            }
            catch (DataBaseException ex)
            {
                WebUtils.MsgBox(ex.Message);
            }
            catch (Exception ex) {
                WebUtils.MsgBox(ConstantesDeMensajes.ErrorInterno);
            }

        }

        protected void DropDownListReportes_SelectedIndexChanged(object sender, EventArgs e)
        {
            /*string nombreReporte = this.DropDownListReportes.SelectedValue;

            if (nombreReporte.Contains("fechas"))
            {
                Panel1.Visible = true;
                IList<string> nombresDeUsuarios = new List<string>();
                foreach(Usuario u in this.usuarioService.ObtenerTodos()){
                    nombresDeUsuarios.Add(u.NombreUsuario);
                }

                DropDownListUsuarios.DataSource = nombresDeUsuarios;
                DropDownListUsuarios.DataBind();
            }
            else
            {
                Panel1.Visible = false;
            }*/
        }
    }

}